// 手动滚动处理
let isLoading = false;

/**
 * 创建并添加抓取按钮到页面
 * @returns {void} 无返回值
 */
function createScrapeButton() {
  const btn = document.createElement('button');
  btn.className = 'scraper-button';
  btn.textContent = '抓取消息';
  btn.addEventListener('click', scrapeAllMessages);
  document.body.appendChild(btn);
}

/**
 * 抓取页面中所有消息并发送到后台处理
 * 查找所有包含消息的span元素并逐个处理
 * @returns {void} 无返回值
 */
function scrapeAllMessages() {
  console.log(1)
  const messages = document.querySelectorAll('span.translatable-message');
  messages.forEach(span => {
    const parsed = parseMessage(span.textContent);
    if (parsed) {
      console.log(3)
      chrome.runtime.sendMessage({
        type: 'NEW_MESSAGE',
        data: {
          ...parsed,
          timestamp: new Date().toISOString()
        }
      });
    }
  });
}

// 自动滚动控制
let scrollInterval;
const SCROLL_DISTANCE = 500;
const SCROLL_DELAY = 1000;
var chatScroll=document.querySelector('#column-center>div>div>div>div.scrollable-y')
/**
 * 自动向上滚动页面
 * 每1秒滚动500px，到达底部时停止
 */
function startAutoScroll() {
  if (scrollInterval) return;
  
  scrollInterval = setInterval(() => {
    if (chatScroll.scrollY <= 0) {
      stopAutoScroll();
      alert("自动停止滚动")
      return;
    }

    
    chatScroll.scrollBy({top:-1000,behavior:'smooth'});//element.scrollBy(xDelta, yDelta);  水平滚动，垂直滚动
    observeNewMessages();
  }, SCROLL_DELAY);
}

/**
 * 停止自动滚动
 */
function stopAutoScroll() {
  clearInterval(scrollInterval);
  scrollInterval = null;
}

// 启动自动滚动
startAutoScroll();

// 初始化
createScrapeButton();

/**
 * 使用MutationObserver监控新消息的出现
 * 当检测到新消息节点时调用processMessage处理
 * @returns {void} 无返回值
 */
function observeNewMessages() {
  const targetNode = document.querySelector('.bubbles-date-group');
  if (!targetNode) return;

  const observer = new MutationObserver((mutations) => {
    mutations.forEach((mutation) => {
      mutation.addedNodes.forEach((node) => {
        if (node.nodeType === 1 && node.classList.contains('bubbles-group')) {
          processMessage(node);
        }
      });
    });
  });

  observer.observe(targetNode, {
    childList: true,
    subtree: true
  });
}

/**
 * 处理单条消息节点，提取内容并发送到后台
 * @param {HTMLElement} messageNode - 包含消息的DOM节点
 * @returns {void} 无返回值
 */
function processMessage(messageNode) {
  try {
    const messageText = messageNode.querySelector('span.translatable-message ')?.textContent;
    if (!messageText) return;

    const parsed = parseMessage(messageText);
    if (parsed) {
      chrome.runtime.sendMessage({
        type: 'NEW_MESSAGE',
        data: {
          ...parsed,
          timestamp: new Date().toISOString()
        }
      });
    }
  } catch (e) {
    console.log('Message processing skipped:', e);
  }
}

/**
 * 解析消息文本，提取结构化数据
 * @param {string} text - 原始消息文本
 * @returns {Object|null} 解析后的消息对象，包含id、昵称、地区等信息，解析失败返回null
 */
function parseMessage(text) {
  try {
    const idMatch = text.match(/@(\w+)/);

    if (!idMatch || !nameMatch) return null;

    return {
      id: idMatch[1],
    };
  } catch (e) {
    console.error('Parse error:', e);
    return null;
  }
}

// 初始观察
observeNewMessages();
